﻿using System.Text;
using Asistente.Model.Representation;
using Asistente.Model.General;

namespace Asistente.Model.IFPUG
{
    //Los casos de uso generan funciones de transaccion. Se crea un caso de uso transformado
    //para cada uno de los casos de uso del sistema, el caul corresponde con un objeto que vincula
    //el caso de uso con la funcion de transaccion generada.

    public class TransformedUseCase: IMeasurable
    {
        public UseCase UseCase { get; set; }
        public TransactionalFunction TransactionalFunction { get; set; }
        public int Ufp { get; set; }

        public TransformedUseCase() 
        {
            TransactionalFunction = new TransactionalFunction();
        }
        
        public void AddDet(int det) 
        {
            TransactionalFunction.Det += det;
        }

        public void AddFtr(int ftr)
        {
            TransactionalFunction.Ftr += ftr;
        }

        //Medir el caso de uso transformado es medir la funcion de transaccion que se genera.
        public int Measure()
        {            
            //Se cuenta la funcion de transacción      
            Ufp = TransactionalFunction.Measure();
            return Ufp;           
        }

        public  override string ToString()
        {
            StringBuilder content = new StringBuilder();
            content.Append("\t" + UseCase.Name);
            content.Append("\t" + TransactionalFunction);
            content.Append("\t" + Ufp);
            return content.ToString();
        }

        internal string ToHtml()
        {
            StringBuilder content = new StringBuilder();
            content.Append("<td>");
            content.Append(UseCase.Name);
            content.Append("</td>");
            content.Append(TransactionalFunction.ToHtml());
            content.Append("<td>");
            content.Append(Ufp);
            content.Append("</td>");
            return content.ToString();
        }
    }
}
